Real Time Group Real Time & Embedded Linux Solutions C++ and OOD for Embedded Systems משך הקורס 40 שעות לימוד ותרגול בשיטת Hands-on-Training 1
Real Time Group is a multi-disciplinary dynamic and innovative Real-Time O.S. and Embedded Software Solutions Center, established in 2007. Providing Bare-Metal and Embedded Linux solutions, professional services and consulting, end-to-end flexible system infrastructure, outsourcing, integration and training services for Hardware, Software and RT-OS \ Embedded Systems. The company is divided into the following three Divisions: Real Time Group College Development Out-sourcing Training Division: rt-ed.co.il rt-dev.com rt-hr.co.il Professional Training Services for Hardware, Software, RT-OS and Embedded systems industries. We provide the knowledge and experience needed to enable professional engineers to Develop, Integrate and QA Hardware, Software and Networking Projects. In order to insure experience, all courses are practical hands-on-training. The latest Development, QA and Automation equipment which are adopted by the industry are used. All students are supplied with Development-Boards for home-work and course projects. 2
Course Overview: C++ one of the most used object-oriented and generic programming languages, providing facilities for high level applications, system programming, even used in embedded as well as low-level BSP \ Hardware manipulation. This course will emphasizon C++ and OOD from an embedded point of view, its performance, efficiency and flexibility of use, design highlights for the later. Who should attend: Software engineers who want to learn C++. C programmers who need to use C++ for Embedded systems. Prerequisite: The course will start from the basics. Knowledge in C programming language is an advantage but not a must. 3
C++ and Object-Oriented Design for Embedded Systems (40 AH) 4 1. Introduction to Object Oriented Design a. History and evolution, from C to C++ b. OOD principles c. Encapsulation, inheritance, polymorphism d. Why and when is C++ better than C. 2. Basic Classes a. Encapsulation of data and methods b. Creating New Class Types c. Defining an Object d. Accessing Class Members e. Implementing Class Methods f. Default arguments g. Possible Ambiguities h. Private Versus Public classes 3. Creation and destruction of an Object a. Life of an object b. Constructors c. Destruction of an Object d. Default Constructors \ Destructors e. Overloading Constructors f. Initializing Objects g. The copy assignment operator h. The Copy Constructor 4. Interface Versus Implementation (*.hpp \ *.cpp) a. What are Header files used for b. Implementing Header files in C++ c. Where do libraries fit in? d. What Is a Rreference? 5. Const members a. Const declarations b. Constants ver defines c. Enumerations d. Const member methods e. Const member data 6. Reference variables a. By val Vs. by reference b. References Vs. Pointers c. What Can Be Referenced d. References usage and Syntax
7. Dynamic allocation in C++ a. The Stack and the Free Store b. Creating Objects on the Free Store c. The new Operator d. new vs malloc e. The delete Operator f. Creating & Deleting Arrays on the Free Store g. How Avoid \ detect Memory Leaks h. const Pointers 8. Working with Streams a. Strings b. File Input and Output 9. Static Variables and Functions a. Static data members b. Static member functions c. Friend classes d. Friend Functions & Classes e. The this Pointer 10. Operator Overloading a. Overloading operator++. b. Operator Overloading Unary Operators c. Operator Overloading: Binary Operators d. The Assignment Operator 11. Inheritance and Derivation a. Scope and initialization b. The Order of construction in Memory c. Member Initialization lists d. Private Versus Protected e. Passing Arguments to Base Constructors f. Namespaces 12. Overriding Functions a. Overloading Versus Overriding b. Virtual Methods c. Virtual Destructors d. Virtual Copy Constructors 5
13. Composition and Container Classes a. collections of objects b. Template classes c. Template functions d. vector e. Iterators 14. Polymorphism a. Virtual Inheritance b. Virtual destructors c. How are virtual function implemented d. Pure virtual functions e. Percolating Upward \ Casting Down 15. Multiple Inheritance a. Inheriting from Shared Base Class b. Problems that may occur c. Ambiguity Resolution 16. Embedded and Real Time C++ Considerations a. Comparing C and C++ Performance analysis b. Implementing Inheritance in C c. The Embedded C++ Language Standard d. C++ Programing Size Considerations e. Pit falls caused by: i. Exceptions, ii. RTTI, iii. with Templates, iv. Multiple Inheritance, v. Operator Overloading f. Placing objects at a specific address g. Interrupts and interrupt vectors in C++ h. Combining C and C++ code 6
Abstract Data Types and Pure Virtual Functions a. How are virtual function implemented b. When should we used them 17. Dynamic Casting a. Casting between different classes, Can it be done? b. Run Time Type Identification 18. Errors and Exceptions a. Overview of exception handling b. The try, catch, and throw keywords. 19. Advanced topics a. Smart pointers b. Interfacing with C c. Class design d. Inline function mechanism 20. Basic Design Patterns a. Singletone b. Factory c. Prototype הערות : פתיחת המסלול מותנה במספר נרשמים. דמי הרשמה אינם מוחזרים אלא במקרה של אי פתיחת מסלול ע"י המכללה. דמי הרשמה כלולים בשכר הלימוד. המכללה מביאה ידעתם של תלמידים שיתכנו שינוים בתוכן הקורסים ובמועדם. המכללה מתחייבת להודיע לתלמידים על כל שינוי. המכללה שומרת לעצמה את הזכות לשנות את תכני המסלול בהתאם לשיקול דעתה הבלעדית. 7